﻿using Dogshow.Model.Validation;
using FluentValidation.TestHelper;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Dogshow.Model.Tests.Validators.MyValidators
{
    [TestClass]
    public class RasaRoditeljaValidatorFixtures
    {
        private PasValidator m_Validator;

        [TestInitialize]
        public void SetUp()
        {
            m_Validator = new PasValidator();
        }

         [TestMethod]
         public void Rasa_Roditelja_Se_Ne_Poklapa_Sa_Rasom_Psa()
         {
             // Arrange
             var otac = new Pas { IdRase = 2 };
             var majka = new Pas {IdRase = 1};
             var pas = new Pas() {IdRase = 1, Otac = otac, Majka = majka};
             
             // Assert
             m_Validator.ShouldHaveValidationErrorFor(x => x.IdRase, pas);
         }

        [TestMethod]
        public void Jedan_Od_Roditelja_Nije_Unet_A_Drugi_Se_Ne_Poklapa()
        {
            // Arrange
            var otac = new Pas { IdRase = 2 };
            var pas = new Pas() { IdRase = 1, Otac = otac };

            // Assert
            m_Validator.ShouldHaveValidationErrorFor(x => x.IdRase, pas);
        }

        [TestMethod]
        public void Oba_Roditelja_Nisu_Uneta()
        {
            var pas = new Pas() { IdRase = 1 };

            // Assert
            m_Validator.ShouldNotHaveValidationErrorFor(x => x.IdRase, pas);
        }

        [TestMethod]
        public void Oba_Roditelja_Se_Poklapaju()
        {
            // Arrange
            var otac = new Pas { IdRase = 1 };
            var majka = new Pas { IdRase = 1 };
            var pas = new Pas() { IdRase = 1, Otac = otac, Majka = majka};

            // Assert
            m_Validator.ShouldNotHaveValidationErrorFor(x => x.IdRase, pas);
        }
    }
}